// 作者:于大明
// 职责：只存放api的请求的接口的数据

//-------------------------Service引入----------------------------------
import MBProduct from '@/service/07MB/MBProductAppService.js';
import MBProductFav from '@/service/07MB/MBProductFavAppService.js';
import MBProductHistory from '@/service/07MB/MBProductHistoryAppService.js';import MBProductOrder from '@/service/07MB/MBProductOrderAppService.js';

let mixinApi = {
    // 负责程序中需要进行set的数据 就是页面交互需要改的数据 比如点击checkbox 需要设置true false 和存放ajax的输入输出 (尽量少去定义data里面的属性 多用computed或者filters或者组件进行处理) 
    // 1 能不能在页面单行代码实现
    // 2 能不能不用data methods去实现这个功能
    data() {
		// const storeID = this.$globalData.userInfo.currentStoreId;
		// const cwCompanyID = this.$globalData.userInfo.cwCompanyID;
		const query=this.$util.getQueryObj();
        return {
            //---------------------接口输入输出 接口名称+in/out 命名 列如接口名称是getStudentList----------------------
            // 一些常用参数如下
            // storeId: '', // 门店ID
            // marketerID: '', // 销售经理
            // pageIndex: 1, // 第几页
            // pageSize: 20, // 每页多少条
            // orderBy: 'createTime desc' // 排序

            // -------------------------Url的参数获取-----------------------------------------------------------------
            queryObj: {
                id: '' // 参数描述
            },
            // 接口输入参数
            getProductDetailIn: {
				id:query.id,
				userInfoGUID:this.$globalData.userInfo.id
            },
            // 接口输出参数
            getProductDetailOut: {
               data:{
					productPrice:0
			   }
            },        };
    },
    // 负责和页面事件进行交互
    methods: {
		async openVip(item){
			const objectId=item.type;
			const payRes= await this.$cw.payOrder(50,this.getProductDetailOut.data.id,this.getProductDetailOut.data.productName,objectId);
			if(payRes){
				setTimeout(()=>{
					this.$cw.refreshUserInfo();
					this.$cw.showConfirm('可直接点击购买,使用会员次数免费置换','提示',false);
				},800)
			}
		},
		async createMBOrder(){
			if(this.getProductDetailOut.data.isPay){
				this.$refs.detailBody.setCurrent(2);
				return;
			}
			
			let isUseCode=0;
			if(this.getProductDetailOut.data.productServiceType==10&&this.$globalData.userInfo.userNoMoneyCount>0){
				 const tip=`当日您剩余免费下载次数为${this.$globalData.userInfo.userNoMoneyCount}次,是否使用下载次数免费购买?`;
				 let resConfirm = await  this.$cw.showConfirm(tip,'提示',true,'次数购买','付费购买');
				 if(resConfirm){
					 isUseCode=1;
				 }
			}
			
			const resOrder =  await MBProductOrder.CreateMBOrder({
				productGUID: this.getProductDetailIn.id,
				userInfoGUID: this.$globalData.userInfo.id,
				isUseCode:isUseCode
			});
			
			if(resOrder){
				let paySuccess=true;
				
				if(!isUseCode){
					// 支付
					const objectId=resOrder.data.id;
					const payRes= await this.$cw.payOrder(40,this.getProductDetailOut.data.id,this.getProductDetailOut.data.productName,objectId);
					if(!payRes){
						paySuccess=false;
					}
				}
				
				if(paySuccess){
					this.getProductDetail();
					this.$cw.showMsg('购买成功');
					setTimeout(async ()=>{
						this.$cw.refreshUserInfo();
						if(this.getProductDetailOut.data.productServiceType==10){
							this.$refs.detailBody.setCurrent(2);
						}else{
							const resCon =await this.$cw.showConfirm('请联系客服进行处理','提示',false);
							if(resCon){
								this.$cw.redirectTo('/pages/40mySub/myOrder/myOrder?tabIndex=1');
							}
						}
					},600);
				}
			}
		},
		
		async createByDtoHis(){
			await MBProductHistory.CreateByDto({
				"productGUID": this.getProductDetailIn.id,
				"userInfoGUID": this.$globalData.userInfo.id,
			},null,null,false);
		},
		
		async productFavOpr(){
			let res = await MBProductFav.ProductFavOpr({
				"productGUID": this.getProductDetailIn.id,
				"userInfoGUID": this.$globalData.userInfo.id,
			});
			// 判断接口是正常返回 没有报错
			if (res) {
			    this.$cw.showMsg('操作成功');
				this.getProductDetailOut.data.productFavGUID = res.data.productFavGUID;
			}
		},
        async getProductDetail() {
            let res = await MBProduct.GetProductDetail(this.getProductDetailIn,null,null,false);
			this.isShowSkeleton=false;
            // 判断接口是正常返回 没有报错
            if (res) {
                this.getProductDetailOut = res;
				await this.$cw.wxShare(this.getProductDetailOut.data.productName,"点击查看课程详情");
            }
        },
    },
}
export default mixinApi;